package com.btb.adapter.model;

import java.math.BigDecimal;
import java.util.Date;

import com.btb.adapter.model.TaskConfig.TaskConfigBuilder;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 *
 */
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@Data
@ToString
public class OffChain {
    private Long id;

    /**
     * 拥有者地址
     */
    private String owner;

    /**
     * 请求的批次ID
     */
    private String requestId;

    /**
     * 上链的一些id
     */
    private String clientId;

    /**
     * 1英雄2鱼
     */
    private Integer type;

    /**
     * 0未上链1下链中2下链待确认3下链成功4下链失败
     */
    private String status;

    /**
     * 下链如有错误时的描述
     */
    private String errDesc;

    /**
     * 下链操作transaction_hash
     */
    private String transactionHash;

    /**
     * 收到数据的时间戳 毫秒
     */
    private Long receiveTimestamp;

    /**
     * 开始下链的时间戳 毫秒
     */
    private Long startUpChainTimestamp;

    /**
     * 链上事件监听时间戳 毫秒
     */
    private Long eventUpChainTimestamp;

    /**
     * 收到事件时的区块高度
     */
    private Long blockNumber;

    /**
     * 下链操作使用的帐户
     */
    private String address;

    /**
     * 下链的gas费用
     */
    private BigDecimal gasUsed;

    /**
     * 推送检查结果
     */
    private String notifyCheckResult;

    /**
     * 调用远程确认时间
     */
    private Date notifyTime;

    /**
     * 已推送次数
     */
    private Integer notifyNum;

    /**
     * 调用远程确认时的区块高度
     */
    private Long notifyBlockNumber;

    /**
     * 通知结果
     */
    private String notityStatus;

    /**
     * 推送结果  如果不是成功,加下notify_num小于配置的次数,就一直推,
     */
    private String notifyResult;

    /**
     * 调用远程时的响应
     */
    private String notifyResponse;

    /**
     * 调用远程时携带的参数
     */
    private String notifyParam;

    /**
     * 响应唯一id
     */
    private String notifyRid;

    /**
     * 交易的唯一id由中心化定义，链上通知需要带上
     */
    private String transactionUuid;

    /**
     * 数据创建时间
     */
    private Date createTime;

    /**
     * 修改时间
     */
    private Date updatedTime;

}